/* Dynamic array tests. */

#include <stdio.h>

void print_array( D_Array array )

int main( int argc , char **argv )
{

  D_Array test_array = NULL ;
  int i ;
  int *el = NULL ;

  printf( "Dynamic array test\n" ) ;

  test_array = NewArray( 5 ) ;

  for( i = 0 ; i < 5 ; i++ )
    {

      el = malloc( sizeof( int ) ) ;
      *el = i ;

      if( SetElement( test_array , i , el ) < 0 )
	{

	  printf( "SetElement failed: errno = %d\n" , errno ) ;
	  FreeArray( test_array ) ;
	  return( 1 ) ;

	}

    }

  print_array( test_array ) ;

  printf( "Removing element 1\n" ) ;
  el = GetElement( test_array , 1 ) ;
  RemoveElement( test_array , 1 ) ;

  print_array( test_array ) ;

  printf( "Inserting same element at position 1\n" ) ;
  InsertElement( test_array , 1 , el ) ;

  print_array( test_array ) ;

  printf( "Appending element\n" ) ;
  el = malloc( sizeof( int ) ) ;
  *el = 5 ;
  AppendElement( test_array , el ) ;

  print_array( test_array ) ;

  printf( "Setting element 2 to 6\n" ) ;
  el = malloc( sizeof( int ) ) ;
  *el = 6 ;
  SetElement( test_array , 2 , el ) ;

  print_array( test_array ) ;

  FreeArray( test_array ) ;
  return( 0 ) ;

}

void print_array( D_Array array )
{

  int i ;

  printf( "Element | Value\n" ) ;
  for( i = 0 ; i < GetLength( array ) ; i++ )
    printf( "%d | %d\n" , i , *( int * )( GetElement( array , i ) ) ) ;


}
